<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Selectionsort</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Selectionsort"> <link href="./_mw_/ext.math.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Selectionsort rootpage-Selectionsort skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Selectionsort</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>Selectionsort</b> (<span style="font-style:normal;font-weight:normal"><a href="Englische_Sprache" title="Englische Sprache">englisch</a></span> <span lang="en-Latn" style="font-style:italic">selection</span> ‚Auswahl‘ und <span style="font-style:normal;font-weight:normal"><a href="Englische_Sprache" title="Englische Sprache">englisch</a></span> <span lang="en-Latn" style="font-style:italic">sort</span> ‚sortieren‘) ist ein einfacher („naiver“) <a href="Sortierverfahren" title="Sortierverfahren">Sortieralgorithmus</a>, der <a href="In-place" class="mw-redirect" title="In-place">in-place</a> arbeitet und in seiner Grundform <a href="Stabilit%C3%A4t_(Sortierverfahren)" title="Stabilität (Sortierverfahren)">instabil</a> ist, wobei er sich auch <a href="Stabilit%C3%A4t_(Sortierverfahren)" title="Stabilität (Sortierverfahren)">stabil</a> implementieren lässt. Die <a href="Komplexit%C3%A4t_(Informatik)" title="Komplexität (Informatik)">Komplexität</a> von Selectionsort ist <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\mathcal {O}}(n^{2})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi class="MJX-tex-caligraphic" mathvariant="script">O</mi>
</mrow>
</mrow>
<mo stretchy="false">(</mo>
<msup>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\mathcal {O}}(n^{2})}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4441d9689c0e6b2c47994e2f587ac5378faeefba.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:6.108ex; height:3.176ex;" alt="{\displaystyle {\mathcal {O}}(n^{2})}" loading="lazy"></span> (<a href="Landau-Notation" class="mw-redirect" title="Landau-Notation">Landau-Notation</a>). Alternative Bezeichnungen des Algorithmus sind <b>MinSort</b> (von <i>Minimum</i>) bzw. <b>MaxSort</b> (von <i>Maximum</i>), <b>Selectsort</b> oder <b>ExchangeSort</b> (AustauschSort).
</p>
<div class="mw-heading mw-heading2"><h2 id="Prinzip">Prinzip</h2></div>
<p>Sei S der sortierte Teil des <a href="Feld_(Datentyp)" class="mw-redirect" title="Feld (Datentyp)">Arrays</a> (vorne im Array) und U der unsortierte Teil (dahinter). Am Anfang ist S noch leer, U entspricht dem ganzen (restlichen) Array. Das Sortieren durch Auswählen läuft nun folgendermaßen ab:
</p><p>Suche das kleinste Element in U und vertausche es mit dem ersten Element von U (= das erste Element <i>nach</i> S).
</p><p>Danach ist das Array bis zu dieser Position sortiert. Das kleinste Element wird in S verschoben (indem S einfach als ein Element länger betrachtet wird, und U nun ein Element später beginnt). S ist um ein Element gewachsen, U um ein Element kürzer geworden. Anschließend wird das Verfahren so lange wiederholt, bis das gesamte Array abgearbeitet worden ist; S umfasst am Ende das gesamte Array, aufsteigend sortiert, U ist leer.
</p>
<div class="mw-heading mw-heading3"><h3 id="Alternativen">Alternativen</h3></div>
<p>Analog kann statt des kleinsten Elements das größte in U gesucht werden, was zu einer absteigenden Sortierreihenfolge führt. Auch kann U nach vorne und S nach hinten gelegt werden, was ebenfalls die Sortierreihenfolge umkehrt.
</p><p>Zudem existieren auch Ansätze, in denen beide Varianten (MinSort und MaxSort) gemeinsam arbeiten; es gibt einen S-Bereich vorne und einen S-Bereich hinten, U liegt dazwischen. Während eines Durchlaufes werden das größte und das kleinste Element in U gesucht und dieses dann jeweils an den Anfang bzw. an das Ende von U gesetzt. Dadurch erreicht man in der Regel eine Beschleunigung, die jedoch meist nicht den Faktor 2 erreicht. Diese Variante wird gelegentlich „Optimized Selection Sort Algorithm“ (OSSA) genannt.
</p>
<div class="mw-heading mw-heading2"><h2 id="Formaler_Algorithmus">Formaler Algorithmus</h2></div>
<p>Der <a href="Algorithmus" title="Algorithmus">Algorithmus</a> sieht im <a href="Pseudocode" title="Pseudocode">Pseudocode</a> so aus:
</p>
<pre>prozedur SelectionSort( A : Liste sortierbarer Elemente )
hoechsterIndex = Elementanzahl( A ) - 1
einfuegeIndex = 0
wiederhole
minPosition = einfuegeIndex
für jeden idx von (einfuegeIndex + 1) bis hoechsterIndex wiederhole
falls A[ idx ] < A[ minPosition ] dann
minPosition = idx
ende falls
ende für
vertausche A[ minPosition ] und A[ einfuegeIndex ]
einfuegeIndex = einfuegeIndex + 1
solange einfuegeIndex < hoechsterIndex
prozedur ende
</pre>
<p>Beispiel-Implementierung des <a href="Algorithmus" title="Algorithmus">Algorithmus</a> in <a href="BASIC" title="BASIC">BASIC</a>:
</p>
<div class="mw-highlight mw-highlight-lang-basic mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span class="linenos" data-line="1"></span><span class="vg">Procedure</span><span class="w"> </span><span class="vg">SelectionSort</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="vg">Dim</span><span class="p">(</span><span class="il">1</span><span class="p">)</span><span class="w"> </span><span class="vg">A</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="vg">Double</span><span class="w"> </span><span class="p">)</span>
<span class="linenos" data-line="2"></span><span class="w"> </span><span class="vg">Integer</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="vg">Elemente</span><span class="p">,</span><span class="w"> </span><span class="vg">Ia</span><span class="p">,</span><span class="w"> </span><span class="vg">Small</span><span class="p">,</span><span class="w"> </span><span class="vg">Ib</span><span class="p">,</span><span class="w"> </span><span class="vg">MaxIndex</span>
<span class="linenos" data-line="3"></span><span class="w"> </span><span class="vg">Double</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="vg">TMP</span>
<span class="linenos" data-line="4"></span><span class="w"> </span>
<span class="linenos" data-line="5"></span><span class="w"> </span><span class="vg">Elemente</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="vg">Count</span><span class="p">(</span><span class="w"> </span><span class="vg">A</span><span class="w"> </span><span class="p">)</span>
<span class="linenos" data-line="6"></span><span class="w"> </span><span class="vg">If</span><span class="w"> </span><span class="vg">Elemente</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="il">2</span><span class="w"> </span><span class="vg">Then</span><span class="w"> </span><span class="vg">Return</span>
<span class="linenos" data-line="7"></span><span class="w"> </span><span class="vg">MaxIndex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="vg">Elemente</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="il">1</span>
<span class="linenos" data-line="8"></span><span class="w"> </span><span class="vg">For</span><span class="w"> </span><span class="vg">Ia</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="il">0</span><span class="w"> </span><span class="vg">To</span><span class="w"> </span><span class="p">(</span><span class="vg">MaxIndex</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="il">1</span><span class="p">)</span>
<span class="linenos" data-line="9"></span><span class="w"> </span><span class="vg">Small</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="vg">Ia</span>
<span class="linenos" data-line="10"></span><span class="w"> </span><span class="vg">For</span><span class="w"> </span><span class="vg">Ib</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="vg">Ia</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="il">1</span><span class="p">)</span><span class="w"> </span><span class="vg">To</span><span class="w"> </span><span class="vg">MaxIndex</span>
<span class="linenos" data-line="11"></span><span class="w"> </span><span class="vg">If</span><span class="w"> </span><span class="vg">A</span><span class="p">(</span><span class="vg">Small</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="vg">A</span><span class="p">(</span><span class="vg">Ib</span><span class="p">)</span><span class="w"> </span><span class="vg">Then</span><span class="w"> </span><span class="vg">Small</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="vg">Ib</span>
<span class="linenos" data-line="12"></span><span class="w"> </span><span class="vg">Next</span><span class="w"> </span><span class="vg">Ib</span>
<span class="linenos" data-line="13"></span><span class="w"> </span><span class="vg">TMP</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="vg">A</span><span class="p">(</span><span class="vg">Ia</span><span class="p">)</span>
<span class="linenos" data-line="14"></span><span class="w"> </span><span class="vg">A</span><span class="p">(</span><span class="vg">Ia</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="vg">A</span><span class="p">(</span><span class="vg">Small</span><span class="p">)</span>
<span class="linenos" data-line="15"></span><span class="w"> </span><span class="vg">A</span><span class="p">(</span><span class="vg">Small</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="vg">TMP</span>
<span class="linenos" data-line="16"></span><span class="w"> </span><span class="vg">Next</span><span class="w"> </span><span class="vg">Ia</span>
<span class="linenos" data-line="17"></span><span class="vg">Return</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Beispiel">Beispiel</h2></div>
<p>Es soll ein <a href="Feld_(Datentyp)" class="mw-redirect" title="Feld (Datentyp)">Array</a> mit dem Inhalt <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle [4|2|1|6|3|5]}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mo stretchy="false">[</mo>
<mn>4</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">|</mo>
</mrow>
<mn>2</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">|</mo>
</mrow>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">|</mo>
</mrow>
<mn>6</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">|</mo>
</mrow>
<mn>3</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">|</mo>
</mrow>
<mn>5</mn>
<mo stretchy="false">]</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle [4|2|1|6|3|5]}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/a6c166d0fa664fb6f0e6493fa14680b39b4884d2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:11.503ex; height:2.843ex;" alt="{\displaystyle [4|2|1|6|3|5]}" loading="lazy"></span> sortiert werden. Rot eingefärbte Felder deuten eine Tauschoperation an, blau eingefärbte Felder liegen im bereits sortierten Teil des Arrays.
</p>
<table class="wikitable">
<tbody><tr>
<td>
<table>
<tbody><tr>
<td class="hintergrundfarbe7">4</td>
<td>2</td>
<td class="hintergrundfarbe7">1</td>
<td>6</td>
<td>3</td>
<td>5
</td></tr></tbody></table>
</td>
<td>Das Minimum ist 1. Vertausche also das 1. und das 3. Element.
</td></tr>
<tr>
<td>
<table>
<tbody><tr>
<td class="hintergrundfarbe6">1</td>
<td class="hintergrundfarbe7">2</td>
<td>4</td>
<td>6</td>
<td>3</td>
<td>5
</td></tr></tbody></table>
</td>
<td>Das Minimum des rechten Teilarrays ist 2. Da es bereits an 2. Position steht, wird es nicht getauscht.
</td></tr>
<tr>
<td>
<table>
<tbody><tr>
<td class="hintergrundfarbe6">1</td>
<td class="hintergrundfarbe6">2</td>
<td class="hintergrundfarbe7">4</td>
<td>6</td>
<td class="hintergrundfarbe7">3</td>
<td>5
</td></tr></tbody></table>
</td>
<td>Wir haben jetzt bereits ein sortiertes Teilarray der Länge 2. Wir vertauschen nun 4 und das Minimum 3.
</td></tr>
<tr>
<td>
<table>
<tbody><tr>
<td class="hintergrundfarbe6">1</td>
<td class="hintergrundfarbe6">2</td>
<td class="hintergrundfarbe6">3</td>
<td class="hintergrundfarbe7">6</td>
<td class="hintergrundfarbe7">4</td>
<td>5
</td></tr></tbody></table>
</td>
<td>Wir vertauschen 6 und 4.
</td></tr>
<tr>
<td>
<table>
<tbody><tr>
<td class="hintergrundfarbe6">1</td>
<td class="hintergrundfarbe6">2</td>
<td class="hintergrundfarbe6">3</td>
<td class="hintergrundfarbe6">4</td>
<td class="hintergrundfarbe7">6</td>
<td class="hintergrundfarbe7">5
</td></tr></tbody></table>
</td>
<td>Wir vertauschen 6 und 5.
</td></tr>
<tr>
<td>
<table>
<tbody><tr>
<td class="hintergrundfarbe6">1</td>
<td class="hintergrundfarbe6">2</td>
<td class="hintergrundfarbe6">3</td>
<td class="hintergrundfarbe6">4</td>
<td class="hintergrundfarbe6">5</td>
<td class="hintergrundfarbe6">6
</td></tr></tbody></table>
</td>
<td>Das Array ist jetzt fertig sortiert.
</td></tr></tbody></table>
<div class="mw-heading mw-heading2"><h2 id="Komplexität"><span id="Komplexit.C3.A4t"></span>Komplexität</h2></div>
<p>Um ein Array mit <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>n</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle n}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/a601995d55609f2d9f5e233e36fbe9ea26011b3b.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.395ex; height:1.676ex;" alt="{\displaystyle n}" loading="lazy"></span> Einträgen mittels SelectionSort zu sortieren, muss <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n-1}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>n</mi>
<mo>−<!-- − --></mo>
<mn>1</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle n-1}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/fbd0b0f32b28f51962943ee9ede4fb34198a2521.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:5.398ex; height:2.343ex;" alt="{\displaystyle n-1}" loading="lazy"></span>-mal das Minimum bestimmt und ebenso oft getauscht werden.
</p><p>Bei der ersten Bestimmung des Minimums sind <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n-1}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>n</mi>
<mo>−<!-- − --></mo>
<mn>1</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle n-1}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/fbd0b0f32b28f51962943ee9ede4fb34198a2521.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:5.398ex; height:2.343ex;" alt="{\displaystyle n-1}" loading="lazy"></span> Vergleiche notwendig, bei der zweiten <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n-2}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>n</mi>
<mo>−<!-- − --></mo>
<mn>2</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle n-2}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/ff40d66ad535411eedb9c686a9008a5089c35ac0.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:5.398ex; height:2.343ex;" alt="{\displaystyle n-2}" loading="lazy"></span> Vergleiche usw.
</p><p>Mit der <a href="Gau%C3%9Fsche_Summenformel" title="Gaußsche Summenformel">gaußschen Summenformel</a> erhält man die Anzahl der notwendigen Vergleiche:
</p>
<dl><dd><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (n-1)+(n-2)+\dotsb +3+2+1={\frac {(n-1)\cdot n}{2}}={\frac {n^{2}}{2}}-{\frac {n}{2}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>−<!-- − --></mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mo>⋯<!-- ⋯ --></mo>
<mo>+</mo>
<mn>3</mn>
<mo>+</mo>
<mn>2</mn>
<mo>+</mo>
<mn>1</mn>
<mo>=</mo>
<mrow class="MJX-TeXAtom-ORD">
<mfrac>
<mrow>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>⋅<!-- ⋅ --></mo>
<mi>n</mi>
</mrow>
<mn>2</mn>
</mfrac>
</mrow>
<mo>=</mo>
<mrow class="MJX-TeXAtom-ORD">
<mfrac>
<msup>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msup>
<mn>2</mn>
</mfrac>
</mrow>
<mo>−<!-- − --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mfrac>
<mi>n</mi>
<mn>2</mn>
</mfrac>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle (n-1)+(n-2)+\dotsb +3+2+1={\frac {(n-1)\cdot n}{2}}={\frac {n^{2}}{2}}-{\frac {n}{2}}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/f1660b6d334435a53641778cfd55660399ba79dc.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.838ex; width:60.496ex; height:5.676ex;" alt="{\displaystyle (n-1)+(n-2)+\dotsb +3+2+1={\frac {(n-1)\cdot n}{2}}={\frac {n^{2}}{2}}-{\frac {n}{2}}}" loading="lazy"></span></dd></dl>
<p>Da das erste Element <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n-1}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>n</mi>
<mo>−<!-- − --></mo>
<mn>1</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle n-1}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/fbd0b0f32b28f51962943ee9ede4fb34198a2521.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:5.398ex; height:2.343ex;" alt="{\displaystyle n-1}" loading="lazy"></span> ist, entspricht die exakte Schrittzahl nicht genau der Darstellung der Gaußformel <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n+(n-1)+\dotsb +2+1={\tfrac {n\cdot (n+1)}{2}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>n</mi>
<mo>+</mo>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mo>⋯<!-- ⋯ --></mo>
<mo>+</mo>
<mn>2</mn>
<mo>+</mo>
<mn>1</mn>
<mo>=</mo>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mfrac>
<mrow>
<mi>n</mi>
<mo>⋅<!-- ⋅ --></mo>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>+</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
</mrow>
<mn>2</mn>
</mfrac>
</mstyle>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle n+(n-1)+\dotsb +2+1={\tfrac {n\cdot (n+1)}{2}}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/871a5454a89403bd52c19b580af86432e2f3b691.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:34.756ex; height:4.176ex;" alt="{\displaystyle n+(n-1)+\dotsb +2+1={\tfrac {n\cdot (n+1)}{2}}}" loading="lazy"></span>.
</p><p>SelectionSort liegt somit in der Komplexitätsklasse <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\mathcal {O}}(n^{2})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi class="MJX-tex-caligraphic" mathvariant="script">O</mi>
</mrow>
</mrow>
<mo stretchy="false">(</mo>
<msup>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\mathcal {O}}(n^{2})}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4441d9689c0e6b2c47994e2f587ac5378faeefba.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:6.108ex; height:3.176ex;" alt="{\displaystyle {\mathcal {O}}(n^{2})}" loading="lazy"></span>.
</p><p>Da zum Ermitteln des Minimums immer der komplette noch nicht sortierte Teil des Arrays durchlaufen werden muss, benötigt SelectionSort auch im „besten Fall“ <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\tfrac {n\cdot (n-1)}{2}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mfrac>
<mrow>
<mi>n</mi>
<mo>⋅<!-- ⋅ --></mo>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
</mrow>
<mn>2</mn>
</mfrac>
</mstyle>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\tfrac {n\cdot (n-1)}{2}}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/43b9872b53ac14f8e745ac6528840e20af56f41d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:6.646ex; height:4.176ex;" alt="{\displaystyle {\tfrac {n\cdot (n-1)}{2}}}" loading="lazy"></span> Vergleiche.
</p>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<div class="sisterproject" style="margin:0.1em 0 0 0;"><div class="noviewer" style="display:inline-block; line-height:10px; min-width:1.6em; text-align:center;" aria-hidden="true" role="presentation"><span class="mw-default-size" typeof="mw:File"><span title="Wikibooks"></span></span></div><b><a href="https://de.wikibooks.org/wiki/Algorithmensammlung:_Sortierverfahren:_Selectionsort" class="extiw external" title="b:Algorithmensammlung: Sortierverfahren: Selectionsort">Wikibooks: Selectionsort</a></b> – Implementierungen in der Algorithmensammlung</div>
<ul><li><a rel="nofollow" class="external free" href="https://www.sortieralgorithmen.de/selectsort/index.html">https://www.sortieralgorithmen.de/selectsort/index.html</a></li>
<li><a rel="nofollow" class="external text" href="http://www.danmor.ch/blog/?p=221">Erklärung und Code in C++</a></li>
<li><a rel="nofollow" class="external text" href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.654.4716&rep=rep1&type=pdf">OSSA – Vorstellung und Pseudocode</a> (PDF)<br> <a rel="nofollow" class="external text" href="http://howtodevelop.eu/question/optimized-selection-sort-algorithm-ossa--how-to-fix-it,27307">OSSA bugfixed</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2024-08-11" href="https://de.wikipedia.org/wiki/?title=Selectionsort&oldid=247602918">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>